package com.cosmoplat.xikai.business.domain.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @ClassName ProductPlanVo
 * @Description 生产计划 - 任务
 * @Author wdf
 * @Date 2025/1/7
 */
@Data
public class ProductTaskVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 任务计划id
     */
    @ApiModelProperty(value = "id",  example = "1")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "工单号",  example = "WORKORDER001")
    private String workOrderNo;

    /**
     * 任务号
     */
    @ApiModelProperty(value = "任务号",  example = "TASKNO001")
    private String taskNo;

    /**
     * 物料编号
     */
    @ApiModelProperty(value = "物料编号",  example = "CODE001")
    private String materialCode;

    /**
     * 物料名称
     */
    @ApiModelProperty(value = "物料名称",  example = "示例物料")
    private String materialName;

    /**
     * 派工数量
     */
    @ApiModelProperty(value = "派工数量/计划数量",  example = "100.00")
    private BigDecimal dispatchQty;


    /**
     * 已完成数量
     *
     */
    @ApiModelProperty(value = "已完成数量",  example = "300.00")
    private BigDecimal completedQty;

    /**
     * 计划投产时间
     */
    @ApiModelProperty(value = "计划投产时间/计划开始日期", example = "2025-01-01 09:00:00")
    private Date planStartTime;


    /**
     * 计划产出时间
     */
    @ApiModelProperty(value = "计划产出时间/计划结束日期", example = "2025-01-01 09:00:00")
    private Date planEndTime;


    /**
     * 实际开始时间
     *
     */
    @ApiModelProperty(value = "任务实际开始时间", example = "2025-01-02 09:00:00")
    private Date taskStartTime;

    /**
     * 实际结束时间
     *
     */
    @ApiModelProperty(value = "任务实际结束时间", example = "2025-01-06 17:00:00")
    private Date taskEndTime;

    /**
     * 生产状态：0:未开始 1:进行中 2:已完成  3:暂停
     * TaskPlanStatusEnum
     *
     */
    @ApiModelProperty(value = "生产状态，默认值为0", example = "0")
    private Integer taskPlanStatus;

    /** 工程名称 工程号  产品型号 */
    /**
     * 工程号
     */
    @ApiModelProperty(value = "工程号", example = "CODE001")
    private String projectCode;

    /**
     * 工程名称
     */
    @ApiModelProperty(value = "工程名称", example = "示例工程")
    private String projectName;

    /**
     * 物料型号
     */
    @ApiModelProperty(value = "产品型号", example = "MODEL-A")
    private String materialModel;

    /**
     * 派工单ID
     */
    @ApiModelProperty(value = "派工单ID", example = "ORDER001")
    private String orderId;
}